package com.atguigu.chaptar2

object $01_Currying {
  def main(args: Array[String]): Unit = {
    //柯里化:有多个参数列表的方法称之为柯里化
    //2.等价于
    add(1,2)(3)(4)
    val a = add _
    //1.add2(1,2)返回函数func1,func1(3)返回函数func2,func2(4)返回结果值Int
    add2(1,2)(3)(4)
    val b = add2 _
  }
  //2.封装函数=>柯里化
  def add(x:Int,y:Int)(z:Int)(a:Int)={x+y+z+a}
  //1.柯里化演变
  def add2(x:Int,y:Int)={
    val func1=(z:Int)=>{
      val func2=(a:Int)=>{
        x+y+z+a
      }
      func2
    }
    func1
  }
  def sum(x:Int,y:Int,z:Int,b:Int)=x+y+z+b
  val sum1=(x:Int)=>(y:Int)=>(z:Int)=>(b:Int)=>x+y+z+b
  def sum2(x:Int)={
    y:Int=>z:Int=> b:Int=>   x+y+z+b
        }



}
